#ifndef NODE_H
#define NODE_H

#include "Visitor.h"

class Node
{
	public:
		virtual ~Node() {}
		virtual void accept(Visitor & v) = 0;
		// The following methods are a hack.  I can't remember what they were
		// for (something encountered in project 3).
		virtual void addStatement(Node * statement) {}
		virtual void addExpr(Node * expr) {}
		virtual void SetName(char * Name) {}
		virtual void setLineNum(int LineNum) {
			lineNum = LineNum;
		}
		virtual int getLineNum() {
			return lineNum;
		}
		virtual bool amIaFunctionDefinition()
		{
			return false;
		}

	protected:
		Node() {}
		int lineNum;
};

#endif

